Spring JDBC-এ Named Parameters এবং SqlParameterSource ব্যবহার করা হয় SQL কোয়েরি বা আপডেট অপারেশনে প্যারামিটার পাঠানোর জন্য। এটি প্যারামিটারাইজড কোয়েরির ব্যবহারে অনেক সুবিধা প্রদান করে এবং কোডকে আরও পরিষ্কার, পাঠযোগ্য এবং নিরাপদ করে তোলে।
Named Parameters হল SQL কোয়েরির মধ্যে প্যারামিটারকে নাম দিয়ে উল্লেখ করার পদ্ধতি। সাধারণত, JDBC এ প্যারামিটার বসানোর জন্য ?
ব্যবহার করা হয়, কিন্তু Named Parameters ব্যবহার করলে প্যারামিটারগুলোকে নাম দিয়ে উল্লেখ করা যায়, যা কোডের পাঠযোগ্যতা বৃদ্ধি করে এবং SQL ইনজেকশনের ঝুঁকি কমায়।
Spring JDBC-এ NamedParameterJdbcTemplate
ব্যবহার করা হয় Named Parameters এর সাথে কাজ করতে।
SqlParameterSource
একটি ইন্টারফেস যা প্যারামিটার মানগুলি সরবরাহ করে। NamedParameterJdbcTemplate
ক্লাস এই ইন্টারফেসটি ব্যবহার করে নামকৃত প্যারামিটারগুলোর মানগুলিকে ম্যানেজ করে।
Spring JDBC-এ NamedParameterJdbcTemplate এবং SqlParameterSource ব্যবহার করার উদাহরণ নিচে দেখানো হলো।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class UserRepository {
@Autowired
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
// Method to get users by age range using named parameters
public List<User> getUsersByAgeRange(int minAge, int maxAge) {
String sql = "SELECT * FROM users WHERE age BETWEEN :minAge AND :maxAge";
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("minAge", minAge);
parameters.addValue("maxAge", maxAge);
return namedParameterJdbcTemplate.query(sql, parameters, new UserRowMapper());
}
}
এখানে:
:minAge
এবং :maxAge
নামে প্যারামিটার ব্যবহার করা হয়েছে।MapSqlParameterSource
ব্যবহার করে প্যারামিটারগুলোর মান (যেমন minAge
এবং maxAge
) সেট করা হয়েছে।NamedParameterJdbcTemplate
ব্যবহার করে কোয়েরি চালানো হয়েছে, যা নামকৃত প্যারামিটারগুলি সমর্থন করে।import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.stereotype.Repository;
@Repository
public class UserRepository {
@Autowired
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
// Method to update user details using named parameters
public int updateUser(int userId, String userName, String email) {
String sql = "UPDATE users SET user_name = :userName, email = :email WHERE user_id = :userId";
SqlParameterSource parameters = new MapSqlParameterSource()
.addValue("userId", userId)
.addValue("userName", userName)
.addValue("email", email);
return namedParameterJdbcTemplate.update(sql, parameters);
}
}
এখানে:
:userId
, :userName
, এবং :email
নামে প্যারামিটার ব্যবহার করা হয়েছে।MapSqlParameterSource
এর মাধ্যমে SQL প্যারামিটারগুলো সেট করা হয়েছে।namedParameterJdbcTemplate.update()
মেথডটি ব্যবহার করে SQL কোয়েরি আপডেট করা হয়েছে।JdbcTemplate
এর মতো কাজ করে, তবে এটি প্যারামিটারগুলির নাম ব্যবহার করে SQL কোয়েরি বা আপডেট অপারেশন পরিচালনা করতে সহায়তা করে।SqlParameterSource
ইন্টারফেসের একটি ইমপ্লিমেন্টেশন। এটি প্যারামিটার নাম এবং তাদের মান সংরক্ষণ করতে ব্যবহৃত হয়।addValue()
মেথডের মাধ্যমে প্যারামিটার যোগ করতে সহায়তা করে, যেখানে প্যারামিটার নাম এবং মান নির্ধারণ করা হয়।MapSqlParameterSource
) প্যারামিটারগুলোর মান রাখার জন্য একটি ইন্টারফেস প্রদান করে এবং NamedParameterJdbcTemplate
এর সাথে খুব সহজে ইন্টিগ্রেট করা যায়।এভাবে Spring JDBC-এ Named Parameters এবং SqlParameterSource ব্যবহার করা কোডকে আরো মেনটেনেবল এবং নিরাপদ করে তোলে।
Read more